home *** CD-ROM | disk | FTP | other *** search
- matrix mWld; // World
- matrix mTot; // Total
-
- texture tDif; // teksturka glowna
- texture tDf3; // Normal map
-
- vector vCPS; // pozycja kamery (w swiecie)
- vector lhtR; // kierunek swiatla (w swiecie)
- vector lPos; // pozycja swiatla w meshu (tu nie uzywam, tylko dla zgodnosci)
- vector lCol; // kolor swiatla odbicia (dla dot3s)
-
-
- technique tec0
- {
- pass p0
- {
- ZBias=0;
- CullMode=ccw;
-
- Texture[0] = <tDif>;
-
- ColorOp[0] = Modulate;
-
- ColorArg1[0] = Diffuse;
- ColorArg2[0] = Texture;
-
- AlphaOp[0]=Disable;
-
- ColorOp[1]=Disable;
- AlphaOp[1]=Disable;
-
- PixelShader = NULL;
- VertexShader = XYZ | Normal | Tex3;
- }
-
-
-
-
- //
- // sciemnic
- //
-
-
- pass p1
- {
- AlphaBlendEnable = true;
- SrcBlend = Zero;
- DestBlend = SrcColor;
- BlendOp=Add;
- ZBias=1;
-
- VertexShaderConstant[0] = <mWld>; //World Matrix
- VertexShaderConstant[4] = <mTot>; //World*View*Proj Matrix
- VertexShaderConstant[11] = (0.0f, 0.0f, 0.0f, 0.0f); // zero
- VertexShaderConstant[12] = (1.0f, 1.0f, 1.0f, 1.0f); // jeden
- vertexShaderConstant[15] = (940.0f, 940.0f, 940.0f, 940.0f);
- VertexShaderConstant[16] = <lhtR>; //Light Position
- vertexShaderConstant[19] = (1024.0f, 1024.0f, 1024.0f, 1024.0f);
- vertexShaderConstant[20] = (.5f,.5f,.5f,.5f);
- VertexShaderConstant[23] = <lPos>;
- VertexShaderConstant[24] = <vCPS>;
-
- Texture[0] = <tDif>;
- Texture[1] = <tDf3>;
-
- VertexShader =
- decl
- {
- stream 0;
- float v0[3]; //Position
- float v3[3]; //Normal
- float v7[2]; //Texture Coord1
- float v8[2]; //Tangent
- float v9[2]; //Tangent
- }
- asm
- {
- vs.1.1
- //pozycja na ekranie
- m4x4 oPos,v0,c4
- m4x4 r0,v0,c0 // Transform point to world space
-
- // chce odleglosc od kamery
- add r5, -r0, c24
- dp3 r10.x, r5.xyz, r5.xyz // kwadrat odleglosci
-
- // odwrotnosc
- rsq r10.x, r10.x
- mul r10.x, r10.x, c15.x
-
- // puszczam dalej
- m3x3 r3,v8,c0 // chce normal
- m3x3 r5,v3,c0 // chce tangent
-
- //gen binormal via Cross product
- mul r0,-r3.zxyw,r5.yzxw;
- mad r4,-r3.yzxw,r5.zxyw,-r0;
-
- //wektor swiatla dla bumpa
- dp3 r6.x,r3,-c16
- dp3 r6.y,r4,-c16
- dp3 r6.z,r5,-c16
-
- // wynik do oD1
- mad oD0.xyz,r6.xyz,c20,c20
- mov oD1.x, r10.x
- mov oD1.y, r10.x
- mov oD1.z, r10.x
- mov oD1.w, r10.x
-
- //wspolrzedne teksrur
- mov oT0, v7
- mov oT1, v7
- };
-
- PixelShader =
- asm
- {
- ps.1.1
- tex t0 // teksrurka glowna
- tex t1 // normal
-
- dp3 r0, t1, v0
- mov r1, v1
- add r0, r0, 1-r1
- };
- }
-
-
-
-
-
-
- //
- // rozjasnic
- //
-
-
- pass p2
- {
- AlphaBlendEnable = true;
- SrcBlend = DestColor;
- DestBlend = One;
- BlendOp=Add;
- ZBias=2;
-
- VertexShaderConstant[0] = <mWld>; //World Matrix
- VertexShaderConstant[4] = <mTot>; //World*View*Proj Matrix
- VertexShaderConstant[11] = (0.0f, 0.0f, 0.0f, 0.0f); // zero
- VertexShaderConstant[12] = (1.0f, 1.0f, 1.0f, 1.0f); // jeden
- vertexShaderConstant[15] = (940.0f, 940.0f, 940.0f, 940.0f);
- VertexShaderConstant[16] = <lhtR>; //Light Position
- vertexShaderConstant[19] = (1024.0f, 1024.0f, 1024.0f, 1024.0f);
- vertexShaderConstant[20] = (.5f,.5f,.5f,.5f);
- VertexShaderConstant[23] = <lPos>;
- VertexShaderConstant[24] = <vCPS>;
-
- Texture[0] = <tDif>;
- Texture[1] = <tDf3>;
-
- VertexShader =
- decl
- {
- stream 0;
- float v0[3]; //Position
- float v3[3]; //Normal
- float v7[2]; //Texture Coord1
- float v8[2]; //Tangent
- float v9[2]; //Tangent
- }
- asm
- {
- vs.1.1
- //pozycja na ekranie
- m4x4 oPos,v0,c4
- m4x4 r0,v0,c0 // do swiata
-
- // chce odleglosc od kamery
- add r5, -r0, c24
- dp3 r10.x, r5.xyz, r5.xyz // kwadrat odleglosci
-
- // odwrotnosc
- rsq r10.x, r10.x
- mul r10.x, r10.x, c15.x
-
- // puszczam dalej
- m3x3 r3,v8,c0 // chce normal
- m3x3 r5,v3,c0 // chce tangent
-
- //gen binormal via Cross product
- mul r0,-r3.zxyw,r5.yzxw;
- mad r4,-r3.yzxw,r5.zxyw,-r0;
-
- //wektor swiatla dla bumpa
- dp3 r6.x,r3,-c16
- dp3 r6.y,r4,-c16
- dp3 r6.z,r5,-c16
-
- // wynik do oD1
- mad oD0.xyz,r6.xyz,c20,c20
- mov oD1.x, r10.x
- mov oD1.y, r10.x
- mov oD1.z, r10.x
- mov oD1.w, r10.x
-
- //wspolrzedne teksrur
- mov oT0, v7
- mov oT1, v7
- };
-
- PixelShader =
- asm
- {
- ps.1.1
- tex t0 // teksrurka glowna
- tex t1 // normal
-
- dp3 r0, t1_bx2, v0_bx2
- mov r1, v1
- sub r0, r0, 1-r1
- };
- }
-
-
-
-
-
- }
-
-
-
-
-
- technique tec1
- {
- pass p0
- {
- ZBias=1;
-
- Texture[0] = <tDif>;
-
- ColorOp[0] = Modulate;
-
- ColorArg1[0] = Diffuse;
- ColorArg2[0] = Texture;
-
- AlphaOp[0]=Disable;
-
- ColorOp[1]=Disable;
- AlphaOp[1]=Disable;
-
- PixelShader = NULL;
- VertexShader = XYZ | Normal | Tex3;
- }
-
- }
-